#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

//将一个字符串拆解为 多个 不含重复字符的字串 并返回其最大子串的长度

const int MAX = 100;

int length_substr(string str)
{
    int maxlen=0;
    int len = str.length();
    int n = -1;
    string ans[MAX];

    for (int i = 0; i < len; i++)
    {
        ans[++n] += str[i];
        int l = 1;

        for (int j = 1; j < len; j++)
        {
            string s = ans[n];
            int r = s.find(str[i + j]); //find返回值来判断新字符是否在子串中存在

            if (-1 == r) //不存在 则 l++
            {
                ans[n] += str[i + j];
                if(str[i + j] == '\0')
                    break;
                l++;
            }
            else    //出现重复字符,则当前子串完毕,检索下一个子串
            {
                i += j - 1; // i和j结合的挺巧妙的,下次i++之后刚好指向下一个子串的首部
                break;
            }
        }

        maxlen = max(maxlen, l);
    }

    return maxlen;
}

int main()
{
    string str;
    getline(cin, str,'\n');
    int maxlen = length_substr(str);
    cout<<maxlen<<endl;
    return 0;
}